﻿using System;
using System.Collections.Generic;
using System.Linq;
using Ro.AssistFunction.OutputManage;
using Ro.Common.RoArgs;

namespace Ro.Interpreter.InterAssistFunc
{
    /// <summary>
    /// 将所有的变量写入一个List中
    /// <para>命令行传入</para>
    /// <para>Tcs中定义</para>
    /// <para>config中传入</para>
    /// </summary>
    public class GetAllProperties
    {
        /// <summary>
        /// 返回List
        /// </summary>
        public List<Property> BackList;

        /// <summary>
        /// 构造函数
        /// 将所有的变量写入一个list内
        /// <para>05-03更改优先级，当遇到相同命名的情况下 command传入的参数是最高级，tcs内部定义优先级最低</para>
        /// </summary>
        /// <param name="pB">TestConfig设置的参数</param>
        public GetAllProperties(List<Property> pB)
        {
            try
            {
                //创建临时全参数，再通过构造函数回调给RoPubArgments.SystemProperties
                List<Property> tempsysp = RoPubArgments.SystemProperties;
                BackList = new List<Property>();
                //从pB中提取单个变量信息
                foreach (Property sigProperty in pB)
                {
                    Property tempPro = (from temp in tempsysp where temp.Id == sigProperty.Id select temp).SingleOrDefault();
                    //命令行推送参数中不存在
                    if (tempPro == null)
                    {
                        tempsysp.Add(sigProperty);
                    }
                }
                //更新返回值
                BackList = tempsysp;
            }
            catch (Exception e)
            {
                //添加输出
                ExceptionOutPut.SystemExceptionOut("GetAllProperties", e);
                BackList = null;
            }
        }

      
    }
}